package aspiration;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import visiteurs.URLExtractingVisitor;

/**
 * classe de parsing d'un fichier css
 *
 */
public class CSSParser {

	/**
	 * adresse du fichier css
	 */
	private String address;
	
	/**
	 * liste de fichiers � t�l�charger
	 */
	private LinkList filesList;
	
	/**
	 * site web en cours de t�l�chargement
	 */
	private String src;
	
	/**
	 * destination de la sauvegarde
	 */
	private String target;
	
	/**
	 * nom du site
	 */
	private String name;
	
	/**
	 * r�pertoires du site couramment parcourus
	 */
	private String currentReps;
	
	/**
	 * constructeur
	 * @param _url adresse du css
	 * @param filesToBeCaptured fichiers � capturer
	 * @param _src source du site
	 * @param _target destination du t�l�chargement
	 * @param _name nom du site
	 * @param _current r�pertoires courants
	 */
	public CSSParser(String _url, LinkList filesToBeCaptured, String _src, String _target, String _name, String _current) {
		address = _url;
		filesList = filesToBeCaptured;
		src = _src;
		target = _target;
		name = _name;
		
		
		String fin = _current.substring(_current.lastIndexOf("/"), _current.length());
		if (fin.contains(".")){
			currentReps = _current.substring(0, _current.lastIndexOf("/"));
		}else{
			currentReps = new String(_current);
		}

	}
	
	/**
	 * parsing du fichier
	 */
	public void parse() {
		
		String fileName = FileDownloader.getFilePath(address, src, target, name);
		
		File fichier = new File(fileName);
		InputStream ips;
		try {
			ips = new FileInputStream(fichier);
			InputStreamReader ipsr=new InputStreamReader(ips);
			BufferedReader br=new BufferedReader(ipsr);
			String ligne;
			 
			while ((ligne=br.readLine())!=null){
				if (ligne.contains("url(")){
					int index = ligne.indexOf("url(")+3;
					int start = index+1;
					if (ligne.charAt(index+1)=='"' || ligne.charAt(index+1)=='\''){
						start = index+2;
					}
					String tmp = ligne.substring(start);
					if (tmp.contains(")")){
						int parD = tmp.indexOf(")");
						if (parD!=0) {
							int end = parD;
							if (ligne.charAt(parD)=='"' || ligne.charAt(parD)=='\''){
								end = parD-1;
							}
							String nom = tmp.substring(0, end);
							nom = URLExtractingVisitor.addressToAbsolute(nom, currentReps, src);
							filesList.add(new Link(nom,0));
							System.out.println(nom+"\n\n");
						}
					}
				}
			}
		
		} catch (FileNotFoundException e) {
			System.out.println("Error while parsing css : css file not found : "+fichier.getName());
		} catch (IOException e) {
			System.out.println("Error while parsing css : css input failed from "+fichier.getName());
		} 
		
	}
}
